package com.bryant.demo05.storage

data class CityData(
    val name: String,
    val longitude: Double,
    val latitude: Double,
    val weather: String,
    val temperature: String
) {
    //  data class自身的方法 - 重写equals和hashCode，使用name作为唯一标识

    // 1. 判断两个对象是否相等
    override fun equals(other: Any?): Boolean {
        // 1.1 判断对象是否为同一个对象
        if (this === other) return true
        // 1.2 判断对象是否为同一类型
        if (javaClass != other?.javaClass) return false
        // 1.3 获取对象
        other as CityData
        // 1.4 只比较 name 字段是否相等
        return name == other.name
    }

    // 2. 返回对象的哈希值 - 通常与 equals 方法配套使用
    override fun hashCode(): Int {
        // 直接返回 name 字段的哈希码
        return name.hashCode()
    }

    // 在集合中，相同 name 的 CityData 会被认为是同一个对象
}